import concurrent.futures
import threading

# 创建线程池，默认情况下，线程数通常等同于CPU核心数
with concurrent.futures.ThreadPoolExecutor() as executor:
    print(f'Default thread count: {threading.active_count()}')

import asyncio


# 假设这是你的耗时方法
def extract_pdf(pdf_file):
    # 这里是提取 PDF 文件的耗时操作
    pass


# 将同步方法包装为异步任务
async def extract_pdf_async(pdf_file):
    loop = asyncio.get_running_loop()
    # 使用 run_in_executor 来运行耗时的同步方法
    # None 表示使用默认的 Executor，即 ThreadPoolExecutor
    result = await loop.run_in_executor(None, extract_pdf, pdf_file)
    return result


# 使用异步方法的例子
async def main():
    # 假设有一个 PDF 文件路径
    pdf_file = 'path/to/your/pdf_file.pdf'

    # 调用异步方法
    result = await extract_pdf_async(pdf_file)
    # 处理结果
    print(result)


# 运行主函数
if __name__ == '__main__':
    asyncio.run(main())
